package cn.lzx.transaction;

import cn.lzx.log.annotation.IncludeLog;
import org.springframework.aop.framework.AopContext;
import org.springframework.stereotype.Service;

/**
 * Created by lizhenxing on 2017/6/15.
 */
@Service
public class LogBusiness {

    @IncludeLog
    public void testExceptionPublic(String username) throws Exception {
        throw new Exception("哈哈，我出错啦");
    }

    @IncludeLog
    protected void testNormalProtected(String name){
        System.out.println(name);
    }

    //3. 间接调用protected方法时，此方法虽然加了注解并且此方法被拦截，但是protected依旧不会被拦截
    //   原因：protected方法的调用并没有使用代理类，而是使用的直接调用
    //        解决方法如下，但是明显是画蛇添足。
    @IncludeLog
    public void testProtected(String name){
        ((LogBusiness)AopContext.currentProxy()).
        testNormalProtected(name);
    }

    public void testPublic(String name) throws Exception {
        testExceptionPublic(name);
    }
}
